import { ComponentParser } from './parser';
import { EnhancedComponentParser } from './enhancedParser';

/**
 * 解析器模式
 */
export enum ParserMode {
  /**
   * 基础模式 - 使用vue-docgen-api的默认解析功能
   */
  BASIC = 'basic',
  
  /**
   * 增强模式 - 使用增强的解析功能，提供更好的自动推导
   */
  ENHANCED = 'enhanced'
}

/**
 * 解析器工厂
 * 用于创建不同类型的组件解析器
 */
export class ParserFactory {
  /**
   * 创建组件解析器
   * @param mode 解析器模式
   * @param scanPaths 要扫描的组件路径
   * @param vueVersion Vue版本 (2, 3, 或 auto)
   */
  public static createParser(
    mode: ParserMode = ParserMode.ENHANCED,
    scanPaths: string[],
    vueVersion: string = 'auto'
  ): ComponentParser {
    switch (mode) {
      case ParserMode.ENHANCED:
        return new EnhancedComponentParser(scanPaths, vueVersion);
      case ParserMode.BASIC:
      default:
        return new ComponentParser(scanPaths, vueVersion);
    }
  }
} 